[AWS Transfer Family web apps] S3にアクセスできるWebアプリケーションをさくっと作ってみた
こんにちは、豊島です。
はじめに
Announcing AWS Transfer Family web apps for fully managed Amazon S3 file transfersを見て
S3のファイルを操作できるWebアプリケーションがコード不要で作成できるとあったので、構築してみました。
準備
- IAM Identity Center が有効になっていること
- WebアプリケーションからアクセスしたいS3バケットが作成済みであること
構築手順(ざっくり)
- AWS Transfer Familyからウェブアプリを作成
- ウェブアプリにIdentity Centerのユーザー or グループを割り当てる
- S3 Access Grantsを作成
- S3 バケットを選択
- アクセスしたいパス/プレフィクスを設定
- Permissionsを設定(Read/Write)
- プリンシパルタイプ(ユーザー or グループ)を設定
- S3にCORSポリシーを設定
- 完了
手順としては4ステップでWebアプリケーションが作成できます。
最後におまけとしてユーザー毎にアクセスを制限する方法を紹介します。
それでは解説していきます
AWS Transfer Familyからウェブアプリを作成
AWS Transfer Family
のウェブアプリ
を選択します(最近発表されたため、新規と出ています)
必要な同時接続数を設定して次へを選択(2024年12月時点で1000が上限でした)
titleやロゴを設定していきます
ウェブアプリを作成を選択
アプリケーションが作成できました。次にIdentity Centerの情報を設定していきます
ウェブアプリにIdentity Centerのユーザー or グループを割り当てる
ウェブアプリIDを選択
ユーザーとグループの割り当て
を選択
今回は既存を割り当て
を選択します(既にIdentity Centerにユーザーやグループが作成されている状態)
設定したいユーザーを選択→割り当てる
を選択
S3 Access Grantsを作成
次にS3のAccess Grantsを作成していきます
S3のサービスページからAccess Grants→権限を作成
を選択
Identity Centerが設定されていない場合は追加し、権限を作成
を選択
権限作成でのポイントは
- サブプレフィックス
- 許可の範囲を設定します。バケット全体でOKであれば
*
- 許可の範囲を設定します。バケット全体でOKであれば
- 許可
- Read/Writeの設定
- 被付与者タイプ
- 今回はIdentity Centerの情報から設定します
- ディレクトリアイデンティティタイプ
- Identity Centerのユーザーもしくはグループの単位で許可を設定できます
- ここではユーザーを設定しました
- ここではユーザーを設定しました
- Identity Centerのユーザーもしくはグループの単位で許可を設定できます
CORSの設定
最後にアプリケーションからS3にアクセスするためCORSを設定します
CORS設定内容
AWS Transfer Family > ウェブアプリから確認できるウェブアプリエンドポイントを設定します
テスト用として大雑把に設定しています
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"POST",
"DELETE",
"HEAD"
],
"AllowedOrigins": [
"https://{ウェブアプリエンドポイント}",
"https://*.{ウェブアプリエンドポイント}"
],
"ExposeHeaders": [
"Access-Control-Allow-Origin"
]
}
]
ウェブアプリのアクセスエンドポイントに接続→サインインするとアクセスが許可されたパスが表示されています
パスを選択して適当な画像をアップロードします
アップロードできました
今回の権限ではダウンロードはもちろん、フォルダの作成、コピー、削除も可能です
おまけ(アクセスできるパスをユーザー毎に制限してみる)
ファイルのアクセスが確認できたため、ユーザー毎にアクセスできるパスを制限してみます
例えば、部署Aの人は部署Bのパスにアクセスできない...といったシーンに活用できます
一例としてIdentity Centerのグループを利用し、グループを部署として扱います
事前準備、確認
Identity Centerで新しいユーザーを作成し、
新しいユーザー(masaya toyoshima 2)を作成、サインインしましたがAccess Grantsが作成されていないため、何も表示されません
Identity Centerからグループを作成していきます
- group-a(元のユーザー
toyoshima masaya
を設定) - group-b(新しいユーザー
masaya toyoshima 2
を設定)
を作成、及び設定します(group-bのユーザーについては構築手順1, 2を参照)
同様の手順でgroup bも作成しておきます
Access Grantsの作成からサブプレフィックスを指定します
今回はgroup-a
用としたいのでgroup-a/*
を設定
許可を設定したい権限をチェックして
被付与者タイプをアイデンティティセンターからのディレクトリID
ディレクトリアイデンティティタイプをグループ
にします
同様の設定でgroup-aをgroup-b
に置換して作成します
group-aのユーザーでログイン後、該当のディレクトリが表示されています(group-bはアクセス権限がないため表示されていない)
group-bのユーザーではgroup-bが表示されています(group-aはアクセス権限がないため表示されていない)
最後に
新しく発表されたAWS Transfer Family web appsでS3のファイルを操作できるWebアプリケーションを作成しました。
IAM Identity Centerが必須といった条件はあるものの、数ステップで構築が完了することに進化を感じました。
どなたかの参考になれば幸いです。